package com.zwps.biz.dal.db.dao;

import cn.hutool.json.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zwps.biz.api.model.dto.dsmdrfsrhrds.DsmDfrSrhrdsDTO;
import com.zwps.biz.api.model.vo.dsmspgpzwl.DsmSectionVO;
import com.zwps.biz.api.model.vo.pubpointall.*;
import com.zwps.biz.api.model.vo.pubwarnrec.CrossSectionCodeVO;
import com.zwps.biz.api.model.vo.pubwarnrec.CrossSectionVO;
import com.zwps.biz.api.model.vo.strsvrr.PatrolCountVO;
import com.zwps.biz.api.model.vo.strsvrr.PtrRecordDetailVO;
import com.zwps.biz.api.model.vo.strsvrr.RadarDataVO;
import com.zwps.biz.api.model.vo.ststbprp.OtherPptnDateVO;
import com.zwps.biz.api.model.vo.ststbprp.OtherPptnPointDataVO;
import com.zwps.biz.api.model.vo.ststbprp.OtherPptnPointVO;
import com.zwps.biz.dal.db.object.PubPointAllDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@DS("lhk")
@Mapper
public interface PubPointAllDAO extends BaseMapper<PubPointAllDO> {
    @DS("lhk")
    String getVideoURL(@Param("rscd") String rscd);
    @DS("lhk")
    List<PubPointAllVO> getAddress(@Param("sttpcd") String sttpcd);
    @DS("lhk")
     List<DsmSectionVO>  querrySection(String sccd);
    @DS("lhk")
    List<String> getVertical(@Param("sccd")String sccd,@Param("hycncd") String hycncd, @Param("contents") List<String> contents);
    @DS("lhk")
    List<String> getVerticals();
    @DS("lhk")
    List<String> querryOtherSection(String hycncd);
    @DS("lhk")
    List<Map<String, Object>> queryNowWaterAndFlow();
    @DS("lhk")
    List<PubSectionWarnVO> geDrpByType();
    @DS("lhk")
    String getWDate(String id);
    @DS("lhk")
    PubPointCountVO countPointByType(String type);

    @DS("lhk")
    List<PttnSectionVO> getPointType();

    @DS("lhk")
    JSONObject getEvolutionData(String id);
    @DS("lhk")
    List<CalculationVO> getBriefWaring();

    @DS("lhk")
    List<MaintainVO> getMaintainInfo(Integer year, String projectType);


    List<PubPointCountVO> countPointByTypes(@Param("list") List<String> asList);
    String getDtvaltbc(Integer type);

    List<PubSectionWarnVO> getSectionStutasByType(Map<String, Object> paramss);
    List<PubValVO> getUpLowThresholdByPtcds (@Param("ptcd") List<String> ptcd);

    PatrolCountVO countPatrolByYear(String year);

    RsvrInfoVO getRsvrInfo();

    BigDecimal getFloodLimit();

    List<ArchivesVO> getArchives(String id);
    List<ArchivesVO> getfile(String id);

    List<PubPointAllVO> getPoinDate(Integer type);

    List<RzRationVO> getRzRation(Integer type);

    NowDateNewVO getNowDateNew();

    List<CrossSectionVO> getCrossSectionList(Integer sccd);

    List<CrossSectionCodeVO> getCrossSectionCode();
    /**
     * 查询水位站历史数据
     *
     * @param timeType 0, 1, 2 日，月，年 水位的 日数据取最高的， 月、年取平均值
     * @return
     */
    List<PubSectionWarnVO> getWaterLevelPointHistoryData(@Param("timeType") Integer timeType,
                                                         @Param("dataTime") String dataTime,
                                                         @Param("stationType") Integer stationType);
    /**
     * 查询雨量站历史数据
     *
     * @param timeType 0, 1, 2 日，月，年 水位的 日数据取最高的， 月、年取平均值
     * @param dataTime 日期
     * @return
     */
    List<PubSectionWarnVO> getRainfallPointHistoryData(@Param("timeType") Integer timeType,
                                                       @Param("dataTime") String dataTime,
                                                       @Param("stationType") Integer stationType);

    String getUnitByStationType(Integer type);

    Map<String, BigDecimal> getStatus(String stcd);
    List<PttnSectionVO> selectListBype(Integer type);

    List<WaterQualityVO> getWaterQualityList();

    List<OtherPptnPointVO> getOthetrPptnPoint(Integer type);

    List<OtherPptnDateVO> getOhetrPptnDate(@Param("stcd") String stcd,
                                           @Param("startTime") String startTime,
                                           @Param("endTime") String endTime,
                                           @Param("type") Integer type);

    List<PubSectionWarnVO> getOhetrPptnLastDate(@Param("type")Integer type,@Param("code")Integer code);

    List<PubPointAllVO> getPoinDateList(Integer type);

    List<PubSectionWarnVO> getOhetrRsvrLastDate(Integer type, Integer code);

    List<PubRainSectionWarnVO> getRainStutasByType(Map<String, Object> params);

    String getType(String stcd);

    List<OtherPptnDateVO> getOhetrRsvrDate(String stcd, String startTime, String endTime, Integer type);

    List<String> getpatrolDataYear();

    List<PttnSectionVO> getElectronicCrawl();

    List<PtrRecordDetailVO> getpatrolList(String id);

    List<RadarDataVO> getDate();

    List<OtherPptnPointDataVO> getOhetrPptnPointDataList(@Param("type") Integer type,
                                                         @Param("stcd") String stcd,
                                                         @Param("startTime") String startTime,
                                                         @Param("endTime") String endTime

    );

    Integer getTable(String stcd);

    String getWaterFile(BigDecimal water);
}